package com.yunke.entity.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * 社群VO
 * 
 * @author yunke
 * @since 1.0.0
 */
@Data
@Schema(name = "YunkeCommunityVo", description = "社群VO")
public class YunkeCommunityVo {

    @Schema(description = "社群ID")
    private Long id;

    @Schema(description = "创建者ID")
    private Long creatorId;

    @Schema(description = "创建者昵称")
    private String creatorName;

    @Schema(description = "社群名称")
    private String communityName;

    @Schema(description = "社群描述")
    private String description;

    @Schema(description = "社群头像")
    private String avatar;

    @Schema(description = "社群背景图")
    private String backgroundImage;

    @Schema(description = "社群类型（1公开 2私密 3付费）")
    private Integer communityType;

    @Schema(description = "社群类型描述")
    private String communityTypeText;

    @Schema(description = "社群标签列表")
    private List<String> tagList;

    @Schema(description = "社群分类ID")
    private Long categoryId;

    @Schema(description = "社群分类名称")
    private String categoryName;

    @Schema(description = "社群地区")
    private String region;

    @Schema(description = "社群位置")
    private String location;

    @Schema(description = "经度")
    private BigDecimal longitude;

    @Schema(description = "纬度")
    private BigDecimal latitude;

    @Schema(description = "加入条件（1自由加入 2申请加入 3邀请加入）")
    private Integer joinCondition;

    @Schema(description = "加入条件描述")
    private String joinConditionText;

    @Schema(description = "入群费用")
    private BigDecimal joinFee;

    @Schema(description = "最大成员数")
    private Integer maxMembers;

    @Schema(description = "当前成员数")
    private Integer currentMembers;

    @Schema(description = "社群公告")
    private String announcement;

    @Schema(description = "社群规则")
    private String rules;

    @Schema(description = "是否允许邀请好友")
    private Boolean allowInvite;

    @Schema(description = "是否开启全员禁言")
    private Boolean muteAll;

    @Schema(description = "是否显示成员列表")
    private Boolean showMembers;

    @Schema(description = "是否允许群内搜索")
    private Boolean allowSearch;

    @Schema(description = "社群评分")
    private BigDecimal rating;

    @Schema(description = "评价数量")
    private Integer reviewCount;

    @Schema(description = "活跃度")
    private Integer activityLevel;

    @Schema(description = "热度值")
    private Integer hotScore;

    @Schema(description = "社群状态（0正常 1禁用 2解散）")
    private Integer communityStatus;

    @Schema(description = "社群状态描述")
    private String communityStatusText;

    @Schema(description = "审核状态（0待审核 1审核通过 2审核拒绝）")
    private Integer auditStatus;

    @Schema(description = "审核状态描述")
    private String auditStatusText;

    @Schema(description = "是否置顶")
    private Boolean isTop;

    @Schema(description = "是否推荐")
    private Boolean isRecommend;

    @Schema(description = "当前用户是否已加入")
    private Boolean isJoined;

    @Schema(description = "当前用户在社群中的角色（1群主 2管理员 3普通成员）")
    private Integer currentUserRole;

    @Schema(description = "距离（米）")
    private Double distance;

    @Schema(description = "最新动态")
    private YunkeCommunityPostVo latestPost;

    @Schema(description = "热门成员列表")
    private List<YunkeCommunityMemberVo> hotMembers;

    @Schema(description = "备注")
    private String remark;

    @Schema(description = "创建时间")
    private Long createTime;

    @Schema(description = "更新时间")
    private Long updateTime;
} 